package org.jsola.hr.vo.payWx;

import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.util.List;

/**
 * 微信返回的批次信息
 *
 * @author zhr
 */
@ApiModel(description = "微信返回的批次信息")
@Data
public class VxReturnBatchVO {

    /**
     * 服务商商户号
     */
    @JSONField(name = "sp_mchid")
    private String spMchid;

    /**
     * 特约商户号
     */
    @JSONField(name = "sub_mchid")
    private String subMchid;

    /**
     * 商家批次单号  在商户系统内部唯一
     */
    @JSONField(name = "out_batch_no")
    private String outBatchNo;

    /**
     * 微信支付批次单号 微信支付批次单号，微信商家转账系统返回的唯一标识
     */
    @JSONField(name = "batch_id")
    private String batchId;

    /**
     * 特约商户appid
     */
    @JSONField(name = "sub_appid")
    private String subAppid;

    /**
     * 批次状态
     * WAIT_PAY：待付款，商户员工确认付款阶段。
     * ACCEPTED：已受理。批次已受理成功，若发起批量转账的30分钟后，转账批次单仍处于该状态，可能原因是商户账户余额不足等。
     * PROCESSING：转账中。已开始处理批次内的转账明细单
     * FINISHED：已完成。批次内的所有转账明细单都已处理完成
     * CLOSED：已关闭。可查询具体的批次关闭原因确认
     */
    @JSONField(name = "batch_status")
    private String batchStatus;

    /**
     * 批次类型
     * API：API方式发起
     * WEB：页面方式发起
     */
    @JSONField(name = "batch_type")
    private String batchType;

    /**
     * 特约商户授权类型
     * INFORMATION_AUTHORIZATION_TYPE：信息授权类型
     * FUND_AUTHORIZATION_TYPE：资金授权类型
     * INFORMATION_AND_FUND_AUTHORIZATION_TYPE：信息和资金授权类型
     */
    @JSONField(name = "authorization_type")
    private String authorizationType;

    /**
     * 批次名称
     */
    @JSONField(name = "batch_name")
    private String batchName;

    /**
     * 批次备注
     */
    @JSONField(name = "batch_remark")
    private String batchRemark;

    /**
     * 批次关闭原因
     * 如果批次单状态为“CLOSED”（已关闭），则有关闭原因：
     * MERCHANT_REVOCATION：商户主动撤销
     * OVERDUE_CLOSE：系统超时关闭
     */
    @JSONField(name = "close_reason")
    private String closeReason;

    /**
     * 批次创建时间 格式为YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE  示例值：2015-05-20T13:29:35.120+08:00
     */
    @JSONField(name = "create_time")
    private String createTime;

    /**
     * 批次更新时间 格式为YYYY-MM-DDTHH:mm:ss.sss+TIMEZONE  示例值：2015-05-20T13:29:35.120+08:00
     */
    @JSONField(name = "update_time")
    private String updateTime;

    /**
     * 转账总金额 单位为“分”
     */
    @JSONField(name = "total_amount")
    private Integer totalAmount;

    /**
     * 转账总笔数 一个转账批次单最多发起三千笔转账
     */
    @JSONField(name = "total_num")
    private Integer totalNum;

    /**
     * 转账成功金额 单位为“分”
     */
    @JSONField(name = "success_amount")
    private Integer successAmount;

    /**
     * 转账成功笔数
     */
    @JSONField(name = "success_num")
    private Integer successNum;

    /**
     * 转账失败金额 单位为“分”
     */
    @JSONField(name = "fail_amount")
    private Integer failAmount;

    /**
     * 转账失败笔数
     */
    @JSONField(name = "fail_num")
    private Integer failNum;

    /**
     * 服务商的appid  微信分配的服务商商户公众账号ID
     */
    @JSONField(name = "sp_appid")
    private String spAppid;

    /**
     * 转账用途
     * 枚举值：
     * GOODSPAYMENT：货款
     * COMMISSION：佣金
     * REFUND：退款
     * REIMBURSEMENT：报销
     * FREIGHT：运费
     * OTHERS：其他
     */
    @JSONField(name = "transfer_purpose")
    private String transferPurpose;

    /**
     * 发起批量转账的明细列表 当批次状态为“FINISHED”（已完成），且成功查询到转账明细单时返回。包括微信明细单号、明细状态信息
     */
    @JSONField(name = "transfer_detail_list")
    List<VxRetuenDetailVO> vxRetuenDetailVOList;



}

